home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Belgian Amiga Club - ADF Collection
/
BS1 part 43.zip
/
Sources C- WorkDisk V.adf
/
peck
/
diropta.c
< prev
next >
Wrap
C/C++ Source or Header
|
1987-02-16
|
1KB
|
58 lines
#include "libraries/dos.h"
#include "exec/memory.h"
extern struct FileLock *Lock(), *CurrentDir();
main()
{
struct FileLock *oldlock;
oldlock = Lock("",ACCESS_READ);
if(oldlock != 0)
{
followthread(oldlock,0);
}
else
{
printf("Cann't lock currentdir\n");
}
printf("\n");
}
int followthread(lock,tab_level)
struct FileLock *lock;
int tab_level;
{
struct FileInfoBlock *m;
struct FileLock *newlock, *oldlock, *ignoredlock;
int success,i;
if(!lock) return(0);
m=(struct FileInfoBlock *) AllocMem(sizeof(struct FileInfoBlock),MEMF_CLEAR);
success = Examine(lock,m);
while(success != 0)
{
if(m->fib_DirEntryType > 0)
{
newlock = Lock(&m->fib_FileName[0],ACCESS_READ);
oldlock = CurrentDir(newlock);
followthread(newlock,tab_level+1);
ignoredlock = CurrentDir(oldlock);
}
success = ExNext(lock,m);
if(success)
{
printf("\n");
for(i=0;i<tab_level;i++) printf("\t");
printf("%ls",&m->fib_FileName[0]);
if(m->fib_DirEntryType > 0) printf(" [dir]");
}
}
if(lock) UnLock(lock);
FreeMem(m,sizeof(struct FileInfoBlock));
}